package com.fate.system.vo.instance;

import lombok.Data;
import lombok.Getter;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import jakarta.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.IdType;

import java.io.Serializable;

import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;

import org.hibernate.validator.constraints.Length;


/**
* @Author:      ten.x
* @TableName    flow_instance
* @Date:        2024-08-26 12:05:33
* @Version:     V1.0
*/
@Data
@Accessors(chain = true)
@TableName(value ="flow_instance")
@EqualsAndHashCode(callSuper = false)
public class InstanceDetailVO implements Serializable {

@TableField(exist = false)
private static final long serialVersionUID = 1L;

    /**
    * 主键：主键id
    */
    @TableId(value = "id")
    @Schema(description ="主键id")
    private String id;
    /**
    * 对应flow_definition表的id
    */
    @NotNull(message="[对应flow_definition表的id]不能为空")
    @TableField(value = "definition_id")
    @Schema(description ="对应flow_definition表的id")
    private String definitionId;
    /**
    * 业务id
    */
    @NotBlank(message="[业务id]不能为空")
    @Size(max= 40,message="编码长度不能超过40")
    @TableField(value = "business_id")
    @Schema(description ="业务id")
    @Length(max= 40,message="编码长度不能超过40")
    private String businessId;
    /**
    * 结点类型（0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关）
    */
    @NotNull(message="[结点类型（0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关）]不能为空")
    @TableField(value = "node_type")
    @Schema(description ="结点类型（0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关）")
    private Integer nodeType;
    /**
    * 流程节点编码
    */
    @NotBlank(message="[流程节点编码]不能为空")
    @Size(max= 40,message="编码长度不能超过40")
    @TableField(value = "node_code")
    @Schema(description ="流程节点编码")
    @Length(max= 40,message="编码长度不能超过40")
    private String nodeCode;
    /**
    * 流程节点名称
    */
    @Size(max= 100,message="编码长度不能超过100")
    @TableField(value = "node_name")
    @Schema(description ="流程节点名称")
    @Length(max= 100,message="编码长度不能超过100")
    private String nodeName;
    /**
    * 任务变量
    */
    @TableField(value = "variable")
    @Schema(description ="任务变量")
    private String variable;
    /**
    * 流程状态（0待提交 1审批中 2 审批通过 3自动通过 8已完成 9已退回 10失效）
    */
    @NotNull(message="[流程状态（0待提交 1审批中 2 审批通过 3自动通过 8已完成 9已退回 10失效）]不能为空")
    @TableField(value = "flow_status")
    @Schema(description ="流程状态（0待提交 1审批中 2 审批通过 3自动通过 8已完成 9已退回 10失效）")
    private Integer flowStatus;
    /**
    * 流程激活状态（0挂起 1激活）
    */
    @NotNull(message="[流程激活状态（0挂起 1激活）]不能为空")
    @TableField(value = "activity_status")
    @Schema(description ="流程激活状态（0挂起 1激活）")
    private Integer activityStatus;
    /**
    * 创建者
    */
    @Size(max= 64,message="编码长度不能超过64")
    @TableField(value = "create_by")
    @Schema(description ="创建者")
    @Length(max= 64,message="编码长度不能超过64")
    private String createBy;
    /**
    * 创建时间
    */
    @TableField(value = "create_time")
    @Schema(description ="创建时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
    * 更新时间
    */
    @TableField(value = "update_time")
    @Schema(description ="更新时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
    * 扩展字段，预留给业务系统使用
    */
    @Size(max= 500,message="编码长度不能超过500")
    @TableField(value = "ext")
    @Schema(description ="扩展字段，预留给业务系统使用")
    @Length(max= 500,message="编码长度不能超过500")
    private String ext;
    /**
    * 删除标志
    */
    @TableField(value = "del_flag")
    @Schema(description ="删除标志")
    private String delFlag;
    /**
    * 租户id
    */
    @Size(max= 40,message="编码长度不能超过40")
    @TableField(value = "tenant_id")
    @Schema(description ="租户id")
    @Length(max= 40,message="编码长度不能超过40")
    private String tenantId;
}